def migrate(cr, version):
    """
    为 state 为 'done' 的 ship.instructions 记录创建关联的 pick.list，
    并将创建出来的 pick.list 的 id 赋值回 ship.instructions 中的 pd_id 字段，
    同时 pd 的 state 设置为 'logistics'
    """
    # 获取所有 state 为 'done' 的 ship.instructions 记录
    cr.execute("""
        SELECT id, name
        FROM ship_instructions
        WHERE state = 'done'
    """)
    done_instructions = cr.fetchall()

    # 针对每条记录循环操作
    for instruction_id, instruction_name in done_instructions:
        # 创建 pick.list 记录，并返回插入的 id，同时将 state 设置为 'logistics'
        cr.execute("""
            INSERT INTO sb_packing_delivery (name, ship_instructions_id, state)
            VALUES (%s, %s, %s)
            RETURNING id;
        """, (instruction_name, instruction_id, 'logistics'))
        inserted_id = cr.fetchone()[0]

        # 更新 ship_instructions 记录，将 pd_id 字段赋值为刚刚创建的 pick.list 的 id
        cr.execute("""
            UPDATE ship_instructions
            SET pd_id = %s
            WHERE id = %s;
        """, (inserted_id, instruction_id))
